Vlastnosti Remote Data Modulu

Otázka od: Pavel Poles

29. 11. 2002 16:41

Zdravim,

nevite nekdo jakym zpusobem pristupovat k funkcim a promenym, ktere
mam definovane v unite pro Remote Data modul.Tento modul pouziva multiple
Instancing, a tedy pro kazdy pozadavek od noveh klienta se vytvori v ramci
jedne
aplikace novy modul.
Jakym zpusobem muzu pristoupit k vlastnostem jednotlivych techto modulu?
(nejlepe vsech postupne...)

Pavel Poles

Odpovedá: Jan Sebelík

30. 11. 2002 16:57

> Odesílatel: Pavel Poles <poles@student.fsid.cvut.cz>
> nevite nekdo jakym zpusobem pristupovat k funkcim a promenym, ktere
> mam definovane v unite pro Remote Data modul.Tento modul pouziva multiple
> Instancing, a tedy pro kazdy pozadavek od noveh klienta se vytvori v ramci
> jedne
> aplikace novy modul.
> Jakym zpusobem muzu pristoupit k vlastnostem jednotlivych techto modulu?
> (nejlepe vsech postupne...)

Remote Data modul je jednak normalni pascalovska trida, jednak COM-objekt,
ktery implementuje dany interface. Jako na instanci pascalovske tridy k nemu
lze pristupovat pouze na aplikacnim serveru, jako na COM- objekt na nej lze
pristupovat z klienta pres metody (properties) toho interface.

Z klienta se dostanu na tyto metody proste tak, ze si vyzadam prislusny
interface (CreateCOMObject, CoMyClass.Create, ...).

Jak se dostanu ze serveru na instanci objektu? No, samotny aplikacni server
nema poneti o tom, ze dany COM-objekt vznikl, takze se na nej sam nedostane. Je
treba prepsat metodu Initialize (override) toho Remote Data Modulu a v teto
metode se vznikajici instance COM-objektu nekam zaregistruje. Treba tak, ze
zavola metodu na hlavnim formulari RegisterMe(self) a tato metoda si ten
parametr prida do nejakeho TList.

Pak muzu
for i:=0 to List.Count-1 do
  TMyRemoteDataModule(List[i]).NejakaMetoda.

Viz nas kurz Vicevrstve aplikace.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 493 792 931 (mobil 776 347735)
=========================================